package xhwl.hmo.mall.http;

import java.util.ArrayList;

import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.POST;
import rx.Observable;
import xhwl.hmo.mall.http.bean.resp.AddressInfoResp;
import xhwl.hmo.mall.http.bean.resp.AddressInfoResp1;
import xhwl.hmo.mall.http.bean.resp.AddressListResp;
import xhwl.hmo.mall.http.bean.resp.BuyResp;
import xhwl.hmo.mall.http.bean.resp.CardStatusResp;
import xhwl.hmo.mall.http.bean.resp.CommentListResp;
import xhwl.hmo.mall.http.bean.resp.FindResp;
import xhwl.hmo.mall.http.bean.resp.GoodsDetailResp;
import xhwl.hmo.mall.http.bean.resp.HMOBannerResp;
import xhwl.hmo.mall.http.bean.resp.HmoNewsResp;
import xhwl.hmo.mall.http.bean.resp.HmoNewsUrlResp;
import xhwl.hmo.mall.http.bean.resp.HttpResp;
import xhwl.hmo.mall.http.bean.resp.MessageListBean;
import xhwl.hmo.mall.http.bean.resp.MineAdressBean;
import xhwl.hmo.mall.http.bean.resp.NewProductResp;
import xhwl.hmo.mall.http.bean.resp.OrderDetailResp;
import xhwl.hmo.mall.http.bean.resp.OrderListBean;
import xhwl.hmo.mall.http.bean.resp.OrderNumBean;
import xhwl.hmo.mall.http.bean.resp.PersonInfo;
import xhwl.hmo.mall.http.bean.resp.RecommendResp;
import xhwl.hmo.mall.http.bean.resp.ReferralPicBean;
import xhwl.hmo.mall.http.bean.resp.ResponseError;
import xhwl.hmo.mall.http.bean.resp.SmsResp;
import xhwl.hmo.mall.http.bean.resp.UpgradeResp;
import xhwl.hmo.mall.http.bean.resp.UserInfoResp;
import xhwl.hmo.mall.http.bean.resp.WxPrepayidResp;

public interface ApiService {
    /**
     * 升级
     *
     * @param body
     * @return
     */
    @POST("interface/app_expert/app_update_info.aspx")
    Observable<UpgradeResp> checkUpgrade(@Body RequestBody body);

    /**
     * 获取验证码
     *
     * @param body
     * @return
     */
    @POST("interface/app_jwsh/get_sms_voice_code.aspx")
    Observable<SmsResp> getVerifyCode(@Body RequestBody body);

    /**
     * 获取微信支预付订单号
     *
     * @param body
     * @return
     */
    @POST("interface/app_hmo_shop/UnifiedOrder.aspx")
    Observable<WxPrepayidResp> getWeixinpayPreid(@Body RequestBody body);


    /**
     * 验证码登录
     *
     * @param body
     * @return
     */
    @POST("interface/app_member_op/login_code.aspx")
    Observable<String> authCodeLogin(@Body RequestBody body);

    //注册极光推送
    @POST("interface/app_member/register_jg_add.aspx")
    Observable<ResponseError> registJPush(@Body RequestBody body);

    //更新登录设备信息
    @POST("interface/app_member_op/update_login_info.aspx")
    Observable<ResponseError> updateLoginInfo(@Body RequestBody body);

    /**
     * 意见反馈
     */
    @POST("/interface/app_sale_card/yc_hmo_feedback_submit.aspx")
    Observable<HttpResp> getFeedBack(@Body RequestBody body);

    /**
     * HMO商城公告
     *
     * @param body
     * @return
     */
    @POST("/interface/app_hmo_shop/shopping_notice.aspx")
    Observable<HttpResp<ArrayList<HmoNewsResp>>> HmoNewsList(@Body RequestBody body);

    /**
     * HMO头条详情
     *
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_consult.aspx")
    Observable<HmoNewsUrlResp> HmoNewsUrl(@Body RequestBody body);

    /**
     * HMO商城banner图
     */
    @POST("/interface/app_hmo_shop/banner_list.aspx")
    Observable<HttpResp<ArrayList<HMOBannerResp>>> HmoBannerUrl(@Body RequestBody body);

    /**
     * 新品首发
     */
    @POST("/interface/app_hmo_shop/new_product.aspx")
    Observable<HttpResp<ArrayList<NewProductResp>>> NewProductUrl(@Body RequestBody body);

    /**
     * 精品推荐
     */
    @POST("/interface/app_hmo_shop/recommendation.aspx")
    Observable<HttpResp<ArrayList<RecommendResp>>> recommend(@Body RequestBody body);

    /**
     * 地址列表
     * 我的地址列表
     */
    @POST("/interface/app_hmo_shop/address_list.aspx")
    Observable<HttpResp<AddressListResp>> getAddressList(@Body RequestBody body);

    /**
     * 商城商品详情
     */
    @POST("/interface/app_hmo_shop/goods_info.aspx")
    Observable<HttpResp<GoodsDetailResp>> getGoodsDetail(@Body RequestBody body);

    /**
     * 订单详情
     */
    @POST("/interface/app_hmo_shop/order_info.aspx")
    Observable<HttpResp<OrderDetailResp>> getOrderDetail(@Body RequestBody body);

    /**
     * 卡种类
     */
    @POST("/interface/app_hmo_shop/goods_list.aspx")
    Observable<HttpResp<ArrayList<CardStatusResp>>> getCardKind(@Body RequestBody body);

    /**
     * 添加地址
     */
    @POST("/interface/app_hmo_shop/address_add.aspx")
    Observable<HttpResp> addAddress(@Body RequestBody body);

    /**
     * 地址信息 所有省市区（暂时不用）
     */
    @POST("/interface/app_hmo_shop/address_info1.aspx")
    Observable<HttpResp<ArrayList<AddressInfoResp1>>> addressInfo1(@Body RequestBody body);

    /**
     * 地址信息 所有省市区
     */
    @POST("/interface/app_hmo_shop/address_info.aspx")
    Observable<HttpResp<AddressInfoResp>> addressInfo(@Body RequestBody body);

    /**
     * 删除地址
     */
    @POST("/interface/app_hmo_shop/address_delete.aspx")
    Observable<HttpResp> delAddress(@Body RequestBody body);

    /**
     * 更新地址
     */
    @POST("/interface/app_hmo_shop/address_update.aspx")
    Observable<HttpResp> updateAddress(@Body RequestBody body);

    /**
     * 取消订单
     */
    @POST("/interface/app_hmo_shop/order_delete.aspx")
    Observable<HttpResp> cancelOrder(@Body RequestBody body);

    /**
     * HMO商城订单列表接口
     */
    @POST("/interface/app_hmo_shop/order_list.aspx")
    Observable<HttpResp<ArrayList<OrderListBean>>> getOrderList(@Body RequestBody body);


    /**
     * 下订单
     */
    @POST("/interface/app_hmo_shop/bx_buy_ok.aspx")
    Observable<HttpResp<BuyResp>> buy(@Body RequestBody body);

    /**
     *
     */
    @POST("/interface/app_hmo_shop/online_pay.aspx")
    Observable<HttpResp> onLinePay(@Body RequestBody body);

    /**
     * 发现
     */
    @POST("/interface/app_hmo_shop/hmo_discover.aspx")
    Observable<HttpResp<ArrayList<FindResp>>> find(@Body RequestBody body);

    /**
     * 确认收货接口
     *
     * @param body
     * @return
     */
    @POST("/interface/app_hmo_shop/receipt.aspx")
    Observable<HttpResp> confirm_receipt(@Body RequestBody body);

    /*
    * 获取最近一次地址
    */
    @POST("/interface/app_hmo_shop/address_default.aspx")
    Observable<HttpResp<AddressListResp.Address>> getRecentAddress(@Body RequestBody body);

    /*
    * 我的界面获取用户信息
    */

    @POST("/interface/app_hmo_shop/member_info.aspx")
    Observable<HttpResp<UserInfoResp>> getUserInfo(@Body RequestBody body);

    /**
     * 获取商品评论
     */
    @POST("/interface/app_hmo_shop/goods_comment_list.aspx")
    Observable<HttpResp<CommentListResp>> getProductsComment(@Body RequestBody body);

    /**
     * 发现点赞
     */
    @POST("/interface/app_hmo_shop/thumbs_up.aspx")
    Observable<HttpResp> getForumThumbsUp(@Body RequestBody body);

    /**
     * 获取保障人列表
     */
    @POST("/interface/app_hmo_shop/member_person_list.aspx")
    Observable<HttpResp<ArrayList<PersonInfo>>> getPersonList(@Body RequestBody body);

    /**
     * 申请实体卡
     */
    @POST("/interface/app_hmo_shop/apply_card.aspx")
    Observable<HttpResp> applyCard(@Body RequestBody body);

    /**
     * 浏览量
     */
    @POST("/interface/app_hmo_shop/page_view.aspx")
    Observable<HttpResp> pageview(@Body RequestBody body);

    /**
     * 热门搜索
     */
    @POST("/interface/app_hmo_shop/hot_search.aspx")
    Observable<HttpResp<ArrayList<CardStatusResp>>> hotsearch(@Body RequestBody body);

    /**
     * 添加评论
     */
    @POST("/interface/app_hmo_shop/goods_comment_add.aspx")
    Observable<HttpResp> addComment(@Body RequestBody body);

    /**
     * 上传图片
     *
     * @param body
     * @return
     */
    @POST("/interface/app_member_op/up_load_image_thumb.aspx")
    Observable<ArrayList<ReferralPicBean>> uploadpic(@Body RequestBody body);

    /**
     * 系统消息列表接口
     */
    @POST("/interface/app_hmo_shop/yc_message_list.aspx")
    Observable<HttpResp<ArrayList<MessageListBean>>> getMessageList(@Body RequestBody body);

    /**
     * HMO商城订单数量接口
     */
    @POST("/interface/app_hmo_shop/order_list_number.aspx")
    Observable<HttpResp<OrderNumBean>> getOrderNum(@Body RequestBody body);

    /**
     * HMO商城我的页面保障人展示接口
     */
    @POST("/interface/app_hmo_shop/member_info_tips.aspx")
    Observable<HttpResp<MineAdressBean>> getGuarantee(@Body RequestBody body);

    /**
     * 搜索精品推荐
     */
    @POST("/interface/app_hmo_shop/search_recommend.aspx")
    Observable<HttpResp<ArrayList<CardStatusResp>>> searchrecommend(@Body RequestBody body);

    /**
     * 更新用户信息
     */
    @POST("/interface/app_hmo_shop/member_update.aspx")
    Observable<HttpResp> updateUserInfo(@Body RequestBody body);

    /**
     * 意见反馈
     */
    @POST("/interface/app_hmo_shop/yc_hmo_feedback_submit.aspx")
    Observable<HttpResp> feedback(@Body RequestBody body);
    /**
     * 是否可以申请实体卡
     */
    @POST("/interface/app_hmo_shop/apply_card_status.aspx")
    Observable<HttpResp> applyCardStatus(@Body RequestBody body);

    //注册极光推送（新）
    @POST("interface/jpush/jpush.aspx")
    Observable<HttpResp> regJPush(@Body RequestBody body);
}
